Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(cli): support --import-existing-resources flag in cdk diff #32831

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

tmokmss
Copy link
Contributor

@tmokmss tmokmss commented Jan 10, 2025

Issue # (if applicable)

Closes #32790.

Reason for this change

I want to know which resources are imported before deployment by just executing cdk diff.

Description of changes

This PR adds a new CLI option --import-existing-resources to cdk diff command. The value is passed when cdk diff creates a change set.

Describe any new or updated permissions being added

None.

Description of how you validated changes

I added a unit test. Also I did E2E testing in my local environment.

Checklist


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

@tmokmss tmokmss requested a review from a team as a code owner January 10, 2025 07:01
@github-actions github-actions bot added effort/small Small work item – less than a day of effort feature-request A feature should be added or improved. p2 labels Jan 10, 2025
@aws-cdk-automation aws-cdk-automation requested a review from a team January 10, 2025 07:01
@github-actions github-actions bot added the star-contributor [Pilot] contributed between 25-49 PRs to the CDK label Jan 10, 2025
stream,
});
} else {
if (options.importExistingResources) {
throw new ToolkitError(`--import-existing-resources diff cannot be enabled for a stack that does not exist yet. StackName: ${stack.stackName}`);
}
Copy link
Contributor Author

@tmokmss tmokmss Jan 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to #29492, cdk diff will not create changeset when the target stack does not exist. Without changeset, CDK cannot know which resource will be imported, so I just throw an error instead.

Copy link
Collaborator

@aws-cdk-automation aws-cdk-automation left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pull request linter has failed. See the aws-cdk-automation comment below for failure reasons. If you believe this pull request should receive an exemption, please comment and provide a justification.

A comment requesting an exemption should contain the text Exemption Request. Additionally, if clarification is needed add Clarification Request to a comment.

@aws-cdk-automation aws-cdk-automation added the pr/needs-cli-test-run This PR needs CLI tests run against it. label Jan 10, 2025
Copy link

codecov bot commented Jan 10, 2025

Codecov Report

Attention: Patch coverage is 50.00000% with 2 lines in your changes missing coverage. Please review.

Project coverage is 81.51%. Comparing base (78fba23) to head (37acb7a).

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #32831      +/-   ##
==========================================
- Coverage   81.52%   81.51%   -0.01%     
==========================================
  Files         222      222              
  Lines       13717    13721       +4     
  Branches     2417     2419       +2     
==========================================
+ Hits        11183    11185       +2     
- Misses       2254     2255       +1     
- Partials      280      281       +1     
Flag Coverage Δ
suite.unit 81.51% <50.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
packages/aws-cdk 80.96% <50.00%> (-0.02%) ⬇️
packages/aws-cdk-lib/core 82.09% <ø> (ø)


try {
await fixture.cdkDeploy('simplified-import', {
});
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The integ-test steps:

  1. Create an AWS resource (e.g. ECR repository) to be imported
  2. Deploy a stack without importing resource (because cdk diff only works for an existing stack)
  3. Run cdk diff with the stack template that contains the resource to be imported
  4. assert cdk diff output
  5. destroy stack
  6. delete the AWS resource created at step 1

@tmokmss
Copy link
Contributor Author

tmokmss commented Jan 10, 2025

Exemption Request: this PR is for cli and will not need to update aws-cdk-lib integ tests. I added cli-integ test instead.

@aws-cdk-automation aws-cdk-automation added the pr-linter/exemption-requested The contributor has requested an exemption to the PR Linter feedback. label Jan 10, 2025
@aws-cdk-automation
Copy link
Collaborator

The pull request linter fails with the following errors:

❌ Features must contain a change to an integration test file and the resulting snapshot.
❌ CLI code has changed. A maintainer must run the code through the testing pipeline (git fetch origin pull/32831/head && git push -f origin FETCH_HEAD:test-main-pipeline), then add the 'pr-linter/cli-integ-tested' label when the pipeline succeeds.

PRs must pass status checks before we can provide a meaningful review.

If you would like to request an exemption from the status checks or clarification on feedback, please leave a comment on this PR containing Exemption Request and/or Clarification Request.

✅ A exemption request has been requested. Please wait for a maintainer's review.

@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

  • CodeBuild project: AutoBuildv2Project1C6BFA3F-wQm2hXv2jqQv
  • Commit ID: 37acb7a
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

@aws-cdk-automation aws-cdk-automation added the pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. label Jan 10, 2025
@aws-cdk-automation
Copy link
Collaborator

The pull request linter fails with the following errors:

❌ Features must contain a change to an integration test file and the resulting snapshot.
❌ CLI code has changed. A maintainer must run the code through the testing pipeline (git fetch origin pull/32831/head && git push -f origin FETCH_HEAD:test-main-pipeline), then add the 'pr-linter/cli-integ-tested' label when the pipeline succeeds.

PRs must pass status checks before we can provide a meaningful review.

If you would like to request an exemption from the status checks or clarification on feedback, please leave a comment on this PR containing Exemption Request and/or Clarification Request.

✅ A exemption request has been requested. Please wait for a maintainer's review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
effort/small Small work item – less than a day of effort feature-request A feature should be added or improved. p2 pr/needs-cli-test-run This PR needs CLI tests run against it. pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. pr-linter/exemption-requested The contributor has requested an exemption to the PR Linter feedback. star-contributor [Pilot] contributed between 25-49 PRs to the CDK
Projects
None yet
Development

Successfully merging this pull request may close these issues.

cli: support --import-existing-resources flag in cdk diff
2 participants